perm filename MACRO.PUB[D,LES] blob
sn#070795 filedate 1973-10-05 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00004 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 .MACRO SCRIPTS ⊂ TURN ON "↑↓[]&_∪" ⊃
C00004 00003 .COMMENT Section numbering and table of contents
C00007 00004 .COMMENT Indexing
C00009 ENDMK
C⊗;
.MACRO SCRIPTS ⊂ TURN ON "↑↓[]&_∪" ⊃
.MACRO GREEKS ⊂ TURN ON "{∂\αβ#←→∞" ⊃
.MACRO FORMAT ⊂ SCRIPTS ; GREEKS ⊃
.MACRO FAC ⊂FILL ADJUST COMPACT CRSPACE GREEKS⊃
.MACRO BV ⊂ BEGIN VERBATIM ⊃
.MACRO SUB(IND) ⊂ INDENT 0,IND; TABS IND+1;⊃
.COMMENT leave space for a full page figure;
.MACRO FIG(NAME) ⊂ SKIP TO COLUMN 1
.GROUP SKIP 20
←NAME GOES HERE
.NEXT PAGE ⊃
.!SPACES ← "#####################################################" ;
.!HYPHENS ← "--------------------------------------------------------------" ;
.MACRO FRACTION(NUM, DEN) ; ⊂
.TURN ON "{↑↓[]" ;
. N ← "NUM" ; D ← "DEN" ;
. LN ← LENGTH(N) ; LD ← LENGTH(D) ;
. IF LN > LD THEN START D ← !SPACES[1 TO (LN-LD) DIV 2] & D ; LMAX ← LN END ;
. IF LD > LN THEN START N ← !SPACES[1 TO (LD-LN) DIV 2] & N ; LMAX ← LD END ;
. "↑[{N}]&↓[{D}]&[{(!HYPHENS[1 TO LMAX])}]" ; TURN OFF ; ⊃
.COMMENT Section numbering and table of contents;
.COUNT SECTION
.MACRO S(NAME) ⊂ SECNAME←SSNAME←NULL
.BEGIN NEXT PAGE; NEXT SECTION; TURN ON "{∂∞→#"
.INDENT 0,8
{SECTION!}.##NAME {SKIP
.SECNAME←"NAME"
.SEND CONTENTS ⊂ SKIP
{SECTION!}.##NAME\∞ ∞.∞ →#{PAGE!}
. ⊃
.END ⊃
.COUNT SUBSECTION IN SECTION PRINTING "!.1"
.MACRO SS(NAME) ⊂ SSNAME←NULL
.BEGIN IF LINES<20 THEN SKIP TO COLUMN 1
.NEXT SUBSECTION; TURN ON "{∂∞→#"
.INDENT 5,13
{SUBSECTION!}##NAME{SKIP 1
.SSNAME←"NAME"
.SEND CONTENTS ⊂
{SKIP 1}∂6{SUBSECTION!}##NAME\∞ ∞.∞ →#{PAGE!}
. ⊃
.END ⊃
.COUNT SUB2 IN SUBSECTION PRINTING "!.1"
.MACRO SSS(NAME) ⊂
.IF LINES<8 THEN SKIP TO COLUMN 1 ELSE SKIP 1; NEXT SUB2
.BEGIN TURN ON "{∂∞→#"
.INDENT 10,18
{SUB2!}##NAME{SKIP
.SEND CONTENTS ⊂
∂(11){SUB2!}##NAME\∞ ∞.∞ →#{PAGE!}
. ⊃
.END ⊃
.COMMENT Call this macro once at the end of the document;
.MACRO BACK ⊂
.COUNT PAGE PRINTING "i"
.TURN ON "{"
.EVERY HEADING(PAGE i,,)
.FILL NOJUST FORMAT CRBREAK
.SECNAME←SSNAME←NULL
.PORTION CONTENTS
.INDENT 0,30,10 PREFACE 0 TABS 30,33,36,39,42,45,48,51,54,57,60,63
.SKIP TO COLUMN 1
←TABLE OF CONTENTS
.SKIP 2
∂(10)Section→Page
.EVEN HEADING(Page {PAGE!},"Table of Contents (cont.)",)
.ODD HEADING(,"Table of Contents (cont.)",Page {PAGE!})
.RECEIVE
. ⊃
.COMMENT Indexing;
.AT "%<" TERM ">" ⊂ BEGIN TURN ON "{"
TERM{ SEND INDEX ⊂ }∧<TERM>{PAGE!}∨{⊃
.END ⊃
.MACRO SENDIT(TERM) ⊂ SEND INDEX ⊂ }∧<TERM>{PAGE!}∨{⊃⊃
.MACRO SI(SIN) ⊂ SENDIT(SIN); S(SIN) ⊃
.MACRO SSI(SIN) ⊂ SENDIT(SIN); SS(SIN) ⊃
.MACRO SSSI(SIN) ⊂ SENDIT(SIN); SSS(SIN) ⊃
.COMMENT Call this macro where you want the index;
.MACRO IND ⊂ PORTION INDEX; NOFILL
.LETTER←PHR←NULL
.EVEN HEADING(Page {PAGE!},INDEX,)
.ODD HEADING(,INDEX,Page {PAGE!})
.AREA TEXT IN 2 COLUMNS 7 APART
.NEXT PAGE
.TURN ON "{"
.EVERY HEADING(,"Index (cont.)",)
.AT "∧<" TERM ">" PGNO "∨" ⊂
.IF "TERM"=PHR THEN START },PGNO{ END
.ELSE START
. IF ↑LETTER=↑"TERM"[1] THEN BREAK ELSE SKIP 1
TERM PGNO{
. PHR←"TERM"; LETTER←"TERM"[1]
. END ⊃
.RECEIVE "<>"
. ⊃